<?php
/**
 * YMessageInterface.php
 *
 * @author Hua Yang <htmlcook@gmail.com>
 * @since 2.0
 */

/**
 * Interface YMessageInterface
 */
interface YMessageInterface
{
	/**
	 * @return string
	 */
	public function getCharset();

	/**
	 * @param $charset
	 * @return YMessageInterface
	 */
	public function setCharset($charset);

	/**
	 * @return string
	 */
	public function getFrom();

	/**
	 * @param $from
	 * @return YMessageInterface
	 */
	public function setFrom($from);

	/**
	 * @return string
	 */
	public function getTo();

	/**
	 * @param $to
	 * @return YMessageInterface
	 */
	public function setTo($to);

	/**
	 * @return string
	 */
	public function getReplyTo();

	/**
	 * @param $replyTo
	 * @return YMessageInterface
	 */
	public function setReplyTo($replyTo);

	/**
	 * @return string
	 */
	public function getCc();

	/**
	 * @param $cc
	 * @return YMessageInterface
	 */
	public function setCc($cc);

	/**
	 * @return string
	 */
	public function getBcc();

	/**
	 * @param $bcc
	 * @return YMessageInterface
	 */
	public function setBcc($bcc);

	/**
	 * @return string
	 */
	public function getSubject();

	/**
	 * @param $subject
	 * @return YMessageInterface
	 */
	public function setSubject($subject);

	/**
	 * @param $text
	 * @return YMessageInterface
	 */
	public function setTextBody($text);

	/**
	 * @param $html
	 * @return YMessageInterface
	 */
	public function setHtmlBody($html);

	/**
	 * @param $fileName
	 * @param array $options
	 * @return YMessageInterface
	 */
	public function attach($fileName, array $options = array());

	/**
	 * @param $content
	 * @param array $options
	 * @return YMessageInterface
	 */
	public function attachContent($content, array $options = array());

	/**
	 * @param $fileName
	 * @param array $options
	 * @return YMessageInterface
	 */
	public function embed($fileName, array $options = array());

	/**
	 * @param $content
	 * @param array $options
	 * @return YMessageInterface
	 */
	public function embedContent($content, array $options = array());

	/**
	 * @param YMailerInterface $mailer
	 * @return bool
	 */
	public function send(YMailerInterface $mailer = null);

	/**
	 * @return string
	 */
	public function toString();
}
